﻿using System;
using System.Collections.Generic;
using System.Text;

using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using System.Configuration;

namespace UnityStudy
{
    class Program
    {
        static void Main(string[] args)
        {
            //1.注册了一个容器；
            IUnityContainer container = new UnityContainer();

            #region 一。使用代码进行侵入式注册
            ////2.向容器中注册ILog服务,并告诉容器用TextFileLog实现这个服务
            ////  容器发现类的构造函数还需要另外一个参数Target,这里用InjectionProperty注入该参数
            //container.RegisterType<ILog, TextFileLog>(new InjectionProperty("Target", "/"));



            ////4.获取服务
            //ILog log = container.Resolve<ILog>();

            ////5.使用服务,到此为止我们都没有使用new关键字创建一个具体类的实例,
            ////  完全屏蔽了组件和服务的实例化,而由Unity自动装配,使得程序更加的灵活.
            //log.Write("日志正文");
            #endregion

            #region //二。使用配置文件进行注册
            // create Unity configuration section
            UnityConfigurationSection section;

            // 从web.config 配置文件读取unity节点的配置
            section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            // 将读取的配置信息应用到Unity 容器
            section.Configure(container);

            container.Resolve<ILog>().Write("qingdao");
            #endregion

            Console.ReadLine();
        }
    }
}
